package cn.labbook.bluetooth.entity;

import cn.labbook.bluetooth.constant.AmmeterConstant;
import com.baomidou.mybatisplus.annotation.IdType;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 *
 * </p>
 *
 * @author lonzy
 * @since 2019-03-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Ammeter implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "ammeter_id", type = IdType.INPUT)
    private String ammeterId;

    private String adminId;

    /**
     * 房东Id
     */
    private String managerId;
    /**
     * 厂家Id
     */
    private String manufacturersId;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    private String location;

    /**
     * 是否激活(1：未激活  0：激活)
     */
    private String status;

    /**
     * 最高充值金额
     */
    private Double rechargeAmount;
    /**
     * 最大电流
     */
    private Double electricity;

    /**
     * 总度数
     */
    private Double amount;

    /**
     * 余额
     */
    private Double balance;

    /**
     * 上传数据时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date readingTime;

    /**
     * 电表服务状态（0：未到期 1：已到期 2：即将到期-30天以内 3：试用期）
     */
    private Integer serverStatus;

    /**
     * 服务到期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date serverTime;

    /**
     * 是否存在试用期（0：存在 1：不存在）
     */
//    private Integer tryStatus;

    /**
     * 是否欠费（0:欠费 1：未欠费）
     */
    private Integer oweStatus;

    /**
     * 电表欠费是否拉闸（0：拉闸 1：不拉闸）
     */
    private Integer switchStatus;
    /**
     * 当前是否拉闸（0：拉闸 1：不拉闸）
     */
    private Integer valve;

    private String userId;
    /**
     * 电表激活时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date activateTime;
    /**
     * 缴费类型 年 半年 季
     */
//    private Integer payType;
    /**
     * 每季服务费
     */
    private Double payPrice;

    private Double dayPrice;

    private Double nightPrice;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date effectTime;

    /**
     * 是否向房客收取服务费
     */
    private Integer isSkimp;

    /**
     * 继电器状态（0；异常 1正常）
     */
    private Integer relayStatus;

    /**
     * 最低保电价格
     */
    private Double protectPrice;


    /**
     * 外部属性
     */
    private transient String adminName;

    private transient String managerName;

    private transient String userName;

    private transient String sex;

    private transient String email;

    private transient String mobilephone;

    private transient String identity;


    public boolean skimpYes() {
        return Objects.equals(AmmeterConstant.IsSkimp.YES, this.isSkimp);
    }

}
